﻿#region 命名空间

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Sharp.DataTransferObject;
using Sharp.Platform.Mvc.Attribute;
using Sharp.Platform.Mvc.Models;

#endregion

namespace Sharp.WebBooter.Areas.CMS.Models
{
    /// <summary>
    /// 用户
    /// </summary>
    public class UserViewModel : BaseViewModel
    {

        public UserViewModel()
        {
            this.IsLockedOut = false;
            RegisteredTime = DateTime.Now;
            LastPasswordChangedDate = DateTime.Now;
            Profile = new UserProfileDTO();
        }


        public Guid Id { get; set; }
        /// <summary>
        /// 获取或设置当前客户的用户名。
        /// </summary>
        [Display(Name = "用户名"), Required]
        public string UserName { get; set; }

        /// <summary>
        /// 获取或设置当前客户的登录密码。
        /// </summary>
        [Display(Name = "密码")]
        public string Password { get; set; }

        /// <summary>
        /// 获取或设置当前客户的登录确认密码。
        /// </summary>
        [Display(Name = "确认密码")]
        [Compare("Password")]
        public string ConfirmPassword { get; set; }

        [Display(Name = "电子邮件")]
        public string EMail { get; set; }
        /// <summary>
        /// 获取或设置一个<see cref="bool" />值，该值表示当前用户账户是否已被禁用。
        /// </summary>
        public bool IsDisabled { get; set; }

        /// <summary>
        /// 获取或设置用户账户注册的时间。
        /// </summary>
        [Required]
        public DateTime RegisteredTime { get; set; }

        /// <summary>
        /// 获取或设置用户账户最后一次登录的时间。
        /// </summary>
        public DateTime? LastLogonTime { get; set; }
        /// <summary>
        /// 获取或设置用户最后一次登录的IP
        /// </summary>
        public string LastLogonIp { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        /// <value>备注</value>
        [StringLength(255), Display(Name = "备注"), DataType(DataType.MultilineText)]
        public string Comment { get; set; }

        /// <summary>
        /// 获取一个值，该值指示成员资格用户是否因被锁定而无法进行验证。
        /// </summary>
        /// <value>如果成员资格用户因被锁定而无法进行验证，则为 true；否则为 false。</value>
        public bool IsLockedOut { get; set; }
        /// <summary>
        /// 是否审核
        /// </summary>
        public bool IsApproved { get; set; }
        /// <summary>
        /// 获取一个值，表示用户当前是否联机。
        /// </summary>
        public bool IsOnline { get; set; }

        /// <summary>
        /// 成员资格用户上次进行身份验证或访问应用程序的日期和时间
        /// </summary>
        public DateTime? LastActivityDate { get; set; }

        /// <summary>
        ///  最近一次锁定成员资格用户的日期和时间
        /// </summary>
        public DateTime? LastLockoutDate { get; set; }

        /// <summary>
        /// 获取上次更新成员资格用户的密码的日期和时间
        /// </summary>
        public DateTime LastPasswordChangedDate { get; set; }

        /// <summary>
        /// 密码问题
        /// </summary>
        [StringLength(255)]
        public string PasswordQuestion { get; set; }

         

        #region 方法

        /// <summary>
        /// 返回表示当前Object的字符串。
        /// </summary>
        /// <returns>表示当前对象的字符串。</returns>
        public override string ToString()
        {
            return UserName;
        }

        #endregion

        /// <summary>
        /// 用户组Id
        /// </summary>
        [Display(Name = "用户组"), DisplayValueField("Title", "Id")]
        public IEnumerable<Guid> UserGroupIds { get; set; }

        public IEnumerable<UserGroupDTO> UserGroupList { get; set; }

        public UserProfileDTO Profile { get; set; }


    }
}